/*
 * txdnet.cn tonydon
 * by netbeans ide 7.2
 */
package cn.txdnet.txweb.basedao;

/**
 * SqlSession 管理者
 * @param <S> : 数据库连接类型
 * @author tangxiaodong
 */
public interface SqlSessionMgr<S> {
    
    /**
     * 初始化
     * @param args ： 自定义初始参数
     */
    void init(String... args);
    
    /**
     * 销毁资源
     */
    void destroy();
    
    /**
     * 开始事务
     */
    void beginTrans();
    
    /**
     * 提交事务
     */
    void commit();
    
    /**
     * 回滚事务
     */
    void rollback();
    
    /**
     * 关闭会话连接
     */
    void closeSession();
    
    /**
     * 获取当前线程相关的数据库连接对象，如果不存在则创建并返回新对象
     * @return S : sql会话对象
     */
    S getSession();
    
    /**
     * 获取当前线程相关的数据库连接对象，如果不存在则返回null
     * @return 
     */
    S currentSession();
    
    /**
     * 获取 {@link SqlSessionMgr} 的默认事务隔离级别
     * @return 
     */
    TransIsoLevel getDefaultTransIsoLevel();
    
    /**
     * 设置当前会话管理隔离级别
     * @param level 
     */
    void setSessionTransIsoLevel(final TransIsoLevel level);
    
    /**
     * 获取配置文件
     * @return 
     */
    String getConfigFile();
}
